home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1995 February: Tool Chest / Dev.CD Feb 95 / Dev.CD Feb 95.toast / Sample Code / Newton Sample Code 1.2 / Intelligent Assistant / IATour-3 next >
Encoding:
Text File  |  1994-02-28  |  3.2 KB  |  134 lines  |  [TEXT/R*ch]

  1. // Copyright ©1993-94 Apple Computer, Inc. All rights reserved.
  2.  
  3. // All these are examples used in the Newton Developer Conference
  4. // Talk, Dec-93.
  5.  
  6. // These expressions can be evaluted in the NTK inspector in succession to 
  7. // match the flow of the talk.
  8.  
  9.  
  10. // Basic Example ////////////////////////////////////////////////////////////
  11.  
  12. tetrisTemplate := {
  13.    isa: 'dyna_user_obj,
  14.    value: "some target",
  15.    lexicon: ["tetris"],
  16. };
  17.  
  18. tetrisActionTemplate := {
  19.    value: "an action",
  20.    isa: 'dyna_user_action,
  21.    lexicon: ["play"],
  22. };
  23.  
  24. tetrisMsg := compile("begin print(\"Tetris!\"); GetRoot().assistant:close(); end");
  25.  
  26. tetrisTaskTemplate := {
  27.    isa: 'task_template,
  28.    primary_act: tetrisActionTemplate,
  29.    preconditions: ['myTarget, 'myAction],
  30.    signature: [tetrisTemplate, tetrisActionTemplate],
  31.    postparse: tetrisMsg,
  32.    taskslip: nil,
  33. };
  34.  
  35.  
  36. tetrisResult := regtasktemplate(tetrisTaskTemplate);
  37.  
  38. parseUtter("play tetris");
  39.  
  40.  
  41. // Action Conflict Part I - The Problem ////////////////////////////////////
  42.  
  43. othelloActionTemplate := {
  44.    value: "another action",
  45.    isa: 'dyna_user_action,
  46.    lexicon: ["play"],
  47. };
  48.  
  49. othelloTemplate := {
  50.    isa: 'dyna_user_obj,
  51.    value: "another target",
  52.    lexicon: ["Othello"],
  53. };
  54.  
  55. othelloMsg := compile("begin print(\"Othello!\"); GetRoot().assistant:close(); end");
  56.  
  57. othelloTaskTemplate := {
  58.    isa: 'task_template,
  59.    primary_act: othelloActionTemplate,
  60.    preconditions: ['myTarget, 'myAction],
  61.    signature: [othelloTemplate, othelloActionTemplate],
  62.    postparse: othelloMsg,
  63.    taskslip: nil,
  64. };
  65.  
  66. othelloResult := regtasktemplate(othelloTaskTemplate);
  67.  
  68. parseutter("play othello");
  69.  
  70.  
  71. // Action Conflict Part II - The Solution //////////////////////////////////
  72.  
  73. unregtasktemplate(tetrisResult);
  74.  
  75. tetrisTaskTemplate := {
  76.    isa: 'task_template,
  77.    primary_act: tetrisActionTemplate,
  78.    preconditions: ['myTarget, 'myAction, 'generic_action],
  79.    signature: [tetrisTemplate, tetrisActionTemplate, 'dyna_user_action],
  80.    postparse: tetrisMsg,
  81.    taskslip: nil,
  82. };
  83.  
  84. tetrisResult := regtasktemplate(tetrisTaskTemplate);
  85.  
  86. unregtasktemplate(othelloResult);
  87.  
  88. othelloTaskTemplate := {
  89.    isa: 'task_template,
  90.    primary_act: othelloActionTemplate,
  91.    preconditions: ['myTarget, 'myAction, 'generic_action],
  92.    signature: [othelloTemplate, othelloActionTemplate, 'dyna_user_action],
  93.    postparse: othelloMsg,
  94.    taskslip: nil,
  95. };
  96.  
  97. othelloResult := regtasktemplate(othelloTaskTemplate);
  98.  
  99. parseutter("play othello");
  100.  
  101. parseutter("play tetris");
  102.  
  103.  
  104. //Using Built-ins for Fun and Profit ///////////////////////////////////////////////
  105.  
  106. expenseActionTemplate := {
  107.    value: "expense action",
  108.    isa: 'dyna_user_action,
  109.    lexicon: ["expense"],
  110. };
  111.  
  112. expenseTargetTemplate := {
  113.     value: "expense target",
  114.     isa: 'dyna_user_obj,
  115.     lexicon: ["Hotel", "Air Fare", "Taxi", "Lunch", "Dinner"]
  116. };
  117.  
  118. expenseMsg := compile("begin print(\"Expense!\"); GetRoot().assistant:close(); end");
  119.  
  120. expenseTaskTemplate := {
  121.    isa: 'task_template,
  122.    primary_act: expenseActionTemplate,
  123.    preconditions: ['myTarget, 'genericTarget, 'myAction],
  124.    signature: [expenseTargetTemplate, 'user_obj, expenseActionTemplate],
  125.    postparse: expenseMsg,
  126.    taskslip: nil,
  127. };
  128.  
  129. expenseResult := regtasktemplate(expenseTaskTemplate);
  130.  
  131. parseUtter("expense lunch");
  132.  
  133. unregtasktemplate(expenseResult);
  134.